home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 44 / Amiga Format CD44 (1999-08-26)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-10].iso / -in_the_mag- / workbench / netkeys / src / keyserv.e < prev    next >
Text File  |  1999-07-28  |  2KB  |  67 lines

  1. -> KeyServ v1.1 by Kyzer/CSG
  2. -> injects recieve network data into the input stream
  3.  
  4. OPT PREPROCESS,OSVERSION=37
  5.  
  6. MODULE 'devices/input', 'devices/inputevent', 'devices/pronet',
  7.        'dos/dos', 'exec/io', 'exec/nodes', 'exec/ports'
  8.  
  9. CONST NETKEYS_PORT = 10350
  10.  
  11. -> Evil-looking, isn't it.
  12.  
  13. PROC main()
  14.   DEF args:PTR TO LONG, rdargs, keyport, keyio:PTR TO iostd, devport,
  15.       netport:PTR TO mp, netio:PTR TO pnrequest, sigs, msg:PTR TO mn,
  16.       evt:inputevent, portsig
  17.  
  18.   args := [0] -> default net = 0
  19.  
  20.   IF rdargs := ReadArgs('NET/N', {args}, NIL)
  21.     IF keyport := CreateMsgPort()
  22.       IF keyio := CreateIORequest(keyport, SIZEOF iostd)
  23.         IF OpenDevice('input.device', 0, keyio, 0) = 0
  24.           IF devport := CreateMsgPort()
  25.             IF netio := CreateIORequest(devport, SIZEOF pnrequest)
  26.               IF netport := CreateMsgPort()
  27.  
  28.                 portsig := Shl(1, netport.sigbit)
  29.  
  30.                 netio.msgport       := netport
  31.                 netio.netsourceport := NETKEYS_PORT
  32.  
  33.                 IF OpenDevice('pronet.device', args[], netio, 0) = 0
  34.                   REPEAT
  35.                     sigs := Wait(SIGBREAKF_CTRL_C OR portsig)
  36.                     IF sigs AND portsig
  37.                       WHILE msg := GetMsg(netport)
  38.                         CopyMem(msg + SIZEOF mn, evt, SIZEOF inputevent)
  39.                         ReplyMsg(msg)
  40.                         keyio.command := IND_WRITEEVENT
  41.                         keyio.data    := evt
  42.                         keyio.length  := SIZEOF inputevent
  43.                         DoIO(keyio)
  44.                       ENDWHILE
  45.                     ENDIF
  46.                   UNTIL sigs AND SIGBREAKF_CTRL_C
  47.                   CloseDevice(netio)
  48.                 ENDIF
  49.                 WHILE msg := GetMsg(netport) DO ReplyMsg(netport)
  50.                 DeleteMsgPort(netport)
  51.               ENDIF
  52.               DeleteIORequest(netio)
  53.             ENDIF
  54.             DeleteMsgPort(devport)
  55.           ENDIF
  56.           CloseDevice(keyio)
  57.         ENDIF
  58.         DeleteIORequest(keyio)
  59.       ENDIF
  60.       DeleteMsgPort(keyport)
  61.     ENDIF
  62.     FreeArgs(rdargs)
  63.   ENDIF
  64.  
  65.   PrintFault(IoErr(), NIL)
  66. ENDPROC
  67.